在執行程式時,遇到系統錯誤或是網路異常是無可避免的,這時我們可能印出錯誤訊息並且讓程式中斷。
當然也不只系統上的錯誤,有時會有參數帶入的錯誤,也必須印出錯誤訊息,
這篇我們要介紹 Go 語言錯誤處理的機制。
在 Go 語言中,將錯誤定義成一個 interface,而內建的 error interface 如下:
error interface {
Error() string
}
在許多套件中的 function,都會再回傳值中,帶一個 error 回傳,例如 strconv.Atoi,我們看一下這個 function 的組成:
func strconv.Atoi(s string) (int, error)
那直接來看如何運用這個 error 回傳值:
package main
import (
"fmt"
"strconv"
)
func main() {
i, err := strconv.Atoi("0.5")
if err != nil {
fmt.Println("couldn't convert number:", err)
return
}
fmt.Println("Converted integer:", i)
}
先來講解 strconv.Atoi 的用途,我們帶入一個字串,但必須是整數字串,聽起來有點繞舌,舉個例子,例如 "1",將其帶入會輸出整數1,以及error,當然如果沒有錯誤,當然就是回傳空值。
那以上面的例子,err 這個變數不為空值,這時你試著只印出 err,會是 invalid syntax ,恩...翻譯成"無效的語法",如果在一個較大的專案,哪會知道錯誤發生在哪段,所以盡可能印出更詳細的資訊,才比較能夠追蹤錯誤,
有時不見得是參數帶錯,而是程式和需求相左,所以這樣如此一來也方便你 debug。
今天介紹簡單的錯誤語法運用,明天將會帶來更實務上的運用,有關 defer 、 panic 、 recover 的使用。感謝各位讀者今天的閱!